package br.uesc.newigrafu.swing.controle;

import br.uesc.newigrafu.dominio.NewIGrafu;
import br.uesc.newigrafu.swing.visao.JanelaPrincipalNewIGrafu;
import br.uesc.newigrafu.swing.visao.PainelReconstrucao;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFileChooser;

import java.io.File;

public class ControleJanelaPrincipalNewIGrafu implements ActionListener {

    NewIGrafu newIGrafu = null;
    JanelaPrincipalNewIGrafu janelaPrincipalNewIGrafu = null;
    String entrada = null;
    String saida = null;
    private static final String ARQUIVO_SAIDA_PADRAO = "outIGrafu"; // Esse é o lugar???

    public ControleJanelaPrincipalNewIGrafu(NewIGrafu _newIGrafu,
            JanelaPrincipalNewIGrafu _janelaPrincipalNewIGrafu) {
        newIGrafu = _newIGrafu;
        janelaPrincipalNewIGrafu = _janelaPrincipalNewIGrafu;
        saida = getSaidaPadrao();
    }

    public void actionPerformed(ActionEvent e) {
        Component fonte = (Component) e.getSource();
        String comando = e.getActionCommand();

        if (comando.equals("CarregarArquivoSequencia")) {
            JFileChooser fileChooser = new JFileChooser();
            int rtn = fileChooser.showOpenDialog(fonte);
            if (rtn == JFileChooser.APPROVE_OPTION) {
                // Domínio?? (ArquivoSequencia)
                File arqseq = fileChooser.getSelectedFile();
                entrada = arqseq.getName();
                System.out.println("Arquivo carregado: " + arqseq.getName());
                janelaPrincipalNewIGrafu.getBotaoNovaReconstrucao().
                        setEnabled(true);
            }
        } else if (comando.equals("NovaReconstrucao")) {
            newIGrafu.novaReconstrucao(entrada, saida);
            System.out.println("Nova reconstrução");
            // A criação do novo painel deve refletir a criação de uma nova
            // reconstrução na camada de domínio (padrão Observer)
            janelaPrincipalNewIGrafu.novoPainelReconstrucao();
        }
    }

    public static String getSaidaPadrao() {
        return ARQUIVO_SAIDA_PADRAO;
    }
}
